package com.alibaba.excel.write.metadata;

import java.util.ArrayList;
import java.util.Collection;
import java.util.List;

import com.alibaba.excel.metadata.BasicParameter;
import com.alibaba.excel.write.handler.WriteHandler;

import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.Setter;

/**
 * 写的基本参数
 **/
@Getter
@Setter
@EqualsAndHashCode
public class WriteBasicParameter extends BasicParameter {

    /**
     * 头部行下标（头部从在哪个行）
     * 相对于工作表的现有内容写入头部。索引是从零开始的。
     * Writes the head relative to the existing contents of the sheet. Indexes are zero-based.
     */
    private Integer relativeHeadRowIndex;

    /**
     * 是否需要头
     */
    private Boolean needHead;
    /**
     * 自定义的 “写” 处理器
     * Custom type handler override the default
     */
    private List<WriteHandler> customWriteHandlerList = new ArrayList<WriteHandler>();

    /**
     * 是否使用默认样式。默认为 true。
     * Use the default style.Default is true.
     */
    private Boolean useDefaultStyle;

    /**
     * 是否自动合并 headers。默认为true。
     * Whether to automatically merge headers.Default is true.
     */
    private Boolean automaticMergeHead;

    /**
     * 排除的列的索引（忽略自定义的列，也就是说自定义的列不收这个设置的影响？）
     * Ignore the custom columns.
     */
    private Collection<Integer> excludeColumnIndexes;

    /**
     * 排除的列的字段名（忽略自定义的列，也就是说自定义的列不收这个设置的影响？）
     * Ignore the custom columns.
     */
    private Collection<String> excludeColumnFieldNames;

    /**
     * 包含的列的下标（如果这个不为空，在导出的时候只会导出这里指定的列）
     * Only output the custom columns.
     */
    private Collection<Integer> includeColumnIndexes;

    /**
     * 包含的列的字段名（如果这个不为空，在导出的时候只会导出这里指定的列）
     * Only output the custom columns.
     */
    private Collection<String> includeColumnFieldNames;
}
